import axios from 'axios'
import JSONbig from 'json-bigint'
import router from '@/router'
import {
  Message
} from 'element-ui'
const request = axios.create({
  baseURL: 'http://api-toutiao-web.itheima.net',
  //定义后端返回的原始数据的处理
  //data：后端返回的原始数据（未经处理的JSON格式字符串）
  transformResponse: [function (data) {
    //axios默认使用JSON.parse来转换原始数据
    try {
      return JSONbig.parse(data)
    } catch (error) {
      return data
    }
  }]
})

//请求拦截器
request.interceptors.request.use(
  function (config) {
    const token = sessionStorage.getItem('token')
    if (token) {
      config.headers.Authorization = 'Bearer ' + token
    }
    return config
  },
  function (error) {
    return Promise.reject(error)
  }
)

//响应拦截器
request.interceptors.response.use(
  function (response) {
    return response
  },
  function (error) {
    const status = error.response.status
    if (status === 401) {
      Message.error('登录状态无效，请重新登录')
      sessionStorage.clear()
      router.push('/login')
    } else if (status === 403) {
      Message.warning('没有操作权限')
    } else if (status === 400) {
      Message.error('请求参数错误')
    } else if (status >= 500) {
      Message.error('服务器内部异常，请稍候重试')
    }
    return Promise.reject(error)
  }
)

export default request
